A number of variables influence computer performance. Factors such as processor speed, the size and speed of random-access memory (RAM), the speed of the system's internal bus, and the speed of disk access all play a role. The speed of disk access is particularly important since disk drives are slower than RAM, and many computer applications involve extensive disk access.
A formatted computer storage medium (e.g., a hard disk) typically contains data storage units called “clusters,” each of which is usually a power-of-two multiple of a smaller 512-byte-long unit called a “sector”; directory or index information about the files and folders stored on the storage medium; and a system for keeping track of which clusters are in use and to which file or folder each cluster belongs. Two well-known file-system architectures are the file-allocation-table (FAT) file system and the New Technology File System (NTFS). These two architectures take very different approaches to organizing and keeping track of data on a storage medium.
The longer a storage medium is used, the more fragmented the data on the storage medium become. That is, the clusters associated with an increasing number of files on the storage medium are scattered rather than contiguous. On a disk drive, reading a fragmented file requires more time than reading a non-fragmented file because the drive head has to jump around on the storage medium to access the scattered clusters making up the file. This extra “seek time” degrades system performance. Since flash-memory-based storage media such as secure digital (SD) cards and multi-media cards (MMCs) are typically formatted like disk volumes, fragmentation can also slow down the reading of data from those storage media, although the problem of seek time that occurs with disk drives is absent.
Utilities for defragmenting a storage medium have become commonplace. Such utilities rewrite the data on the storage medium, rendering contiguous the clusters making up each file. Before a computer user incurs the time and possible risk to data involved in using a defragmentation utility, however, the user may wish to test the storage medium first to measure the extent of data fragmentation. Conventional methods for evaluating the extent of fragmentation on a storage medium employing a NTFS file system involve traversing the file system's directory structure to identify files one at a time, locating the Master-File-Table (MFT) record for each file, and evaluating the fragmentation state of that file. These conventional methods can require a significant amount of time to execute (e.g., several minutes), especially for large storage volumes.
It is thus apparent that there is a need in the art for an improved method and system for rapid data-fragmentation analysis of a NTFS file system.